// 主页逻辑控制 - 中医适宜技术防控青少年近视系统
// 文件：miniprogram/pages/welcome/welcome.js
// 功能：主页功能入口、权限控制、用户引导

const { isLoggedIn, getToken, computeUserStatus, getUserProfile } = require('../../utils/auth.js');

Page({
  data: {
    // 用户状态
    userStatus: 'visitor', // visitor | registered | complete
    
    // 弹窗控制
    showLoginDialog: false,
    showCompleteDialog: false,
    
    // 功能权限配置
    functionPermissions: {
      'intervention': {
        required: 'complete',
        message: '请先完成注册并绑定学生信息'
      },
      'social': {
        required: 'complete', 
        message: '请先完成注册并绑定学生信息'
      },
      'communication': {
        required: 'complete',
        message: '请先完成注册并绑定学生信息'
      },
      'query': {
        required: 'complete',
        message: '请先完成注册并绑定学生信息'
      }
    }
  },

  /**
   * 页面加载
   */
  onLoad() {
    console.log('[WELCOME] onLoad');
    // 首次渲染后再异步检查，避免阻塞首屏
    setTimeout(() => {
      this.checkUserStatus();
    }, 0);
  },

  onReady() {
    // 强制一次轻量 setData 触发布局，规避极少数设备初次渲染空白
    this.setData({ __ready: true });
  },

  /**
   * 页面显示
   */
  onShow() {
  this.checkUserStatus(true);
  },

  /**
   * 检查用户状态
   */
  async checkUserStatus(forceRefresh = false) {
    try {
      // 先本地计算
      const { status } = computeUserStatus();
      this.setData({ userStatus: status });
      if (forceRefresh || status === 'registered') {
        // 尝试拉取最新资料，避免首次登录后还未获取 profile 的误判
        try {
          await getUserProfile();
          const latest = computeUserStatus();
          this.setData({ userStatus: latest.status });
        } catch (e) {
          // 忽略失败，保持当前状态
        }
      }
    } catch (error) {
      console.error('检查用户状态失败:', error);
      this.setData({ userStatus: 'visitor' });
    }
  },

  /**
   * 功能区块点击处理
   */
  navigateToFunction(e) {
    const functionName = e.currentTarget.dataset.function;
    console.log('点击功能:', functionName);

    // 检查权限
    if (!this.checkFunctionPermission(functionName)) {
      return;
    }

    // 有权限，跳转到对应功能页面
    const routeMap = {
      'intervention': '/pages/upload/upload',
      'social': '/pages/social/social', 
      'communication': '/pages/communication/communication',
      'query': '/pages/query/query'
    };

    const url = routeMap[functionName];
    if (url) {
      wx.navigateTo({
        url: url,
        fail: (err) => {
          console.error('页面跳转失败:', err);
          wx.showToast({
            title: '页面跳转失败',
            icon: 'error'
          });
        }
      });
    }
  },

  /**
   * 检查功能权限
   */
  checkFunctionPermission(functionName) {
    const permission = this.data.functionPermissions[functionName];
    if (!permission) return true;

    const userStatus = this.data.userStatus;
    
    // 权限不足，显示相应提示
    if (userStatus !== permission.required) {
      this.showPermissionDialog(userStatus);
      return false;
    }

    return true;
  },

  /**
   * 显示权限提示对话框
   */
  showPermissionDialog(userStatus) {
    if (userStatus === 'visitor') {
      this.setData({ showLoginDialog: true });
    } else if (userStatus === 'registered') {
      this.setData({ showCompleteDialog: true });
    }
  },

  /**
   * 关闭登录对话框
   */
  closeLoginDialog() {
    this.setData({ showLoginDialog: false });
  },

  /**
   * 关闭完善信息对话框
   */
  closeCompleteDialog() {
    this.setData({ showCompleteDialog: false });
  },

  /**
   * 跳转到登录页面
   */
  navigateToLogin() {
    this.setData({ showLoginDialog: false });
    
    // 跳转到登录页面（后续创建）
    wx.navigateTo({
      url: '/pages/login/login',
      fail: () => {
        // 如果登录页面不存在，暂时跳转到个人中心
        wx.switchTab({
          url: '/pages/profile/profile'
        });
      }
    });
  },

  /**
   * 跳转到个人中心
   */
  navigateToProfile() {
    this.setData({ showCompleteDialog: false });
    
    wx.switchTab({
      url: '/pages/profile/profile'
    });
  },

  /**
   * 分享功能
   */
  onShareAppMessage() {
    return {
      title: '中医适宜技术防控青少年近视系统',
      path: '/pages/welcome/welcome',
      imageUrl: '/images/share-cover.png'
    };
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    return {
      title: '中医适宜技术防控青少年近视系统',
      imageUrl: '/images/share-cover.png'
    };
  }
});